/**
 *\file maison.h
 *\author Raphaël
 *\author Imad Smaani
 */
#ifndef MAISON_H_INCLUDED
#define MAISON_H_INCLUDED

#include <string.h>

#include "sabot.h"
#include "liste.h"
#include "joueur.h"

/**\struct Maison maison.h*/
typedef struct sMaison
{
    Liste * handMaison;
    Sabot * sabot;
} Maison;

/* ---------------------------------------------- GESTION STRUCTURE & MEMOIRE ----------------------------------------------*/
/**\brief Initialise la structure Maison et remplie la main du croupier avec 2 cartes*/
Maison * initMaison();
/**\brief Detruit la structure Maison*/
void detruireMaison (Maison **);
/**\brief Initialise la main de la maison */
void initMainMaison(Maison *);
/* ---------------------------------------------- FIN GESTION STRUCTURE & MEMOIRE ----------------------------------------------*/
/**\brief Retourne l'adresse de la main de la maison*/
Liste* getListeMaison(const Maison*);

/** \brief Test si la première main gagne la seconde.
 * Retourne 1 si la première main gagne, 0 si elle perd et -1 en cas d'égalité.
 * \param pointeur sur Joueur
 * \param pointeur sur Maison
 * \param entier
 * \return entier
 *
 */

int gagneListe(const Joueur*, const Maison*, int);
/* ---------------------------------------------- AFFICHAGE ----------------------------------------------*/
/**\brief Vide toutes les cases de la table*/
void afficheListeMaison (const Maison *,unsigned int);
/* ---------------------------------------------- FIN AFFICHAGE ----------------------------------------------*/
/**\brief Realise le tirage de la maison*/
void tirageMaison (Maison *,unsigned int);
/**\brief Pioche une carte et la met dans la Liste correspondant*/
void piocherCarte (Liste *,Maison *);
/**\brief Actualise le credit du joueur*/
void payerJoueur(Maison*, Joueur *, int indice);
/**\brief Renvoie 1 si le joueur veut l'assurance et 0 sinon*/
void proposerAssurance (Maison *, Joueur*, int);
/**\brief Separe une main en deux*/
void separationListe(Joueur*, Maison*, int);
/**\brief Vide toutes les cases de la table*/
void ramasserCarte (Joueur *,Maison *);
/**\brief Distribue les cartes au croupier et au joueurs*/
void distribuerCarte(Maison *, Joueur *);

#endif
